iOSをBLEマウスにするのあきらめていなかった
概要
Bluetooth 4.0でiOSをマウスにするのには失敗した前回。
とりあえずMac側にサーバアプリ入れないと駄目だ、、死のう、、、
→あきらめてなかった。
本体を作り終わったら再開する。まず一度終わらせよう。
別の実装を探す準備
http://www.bluez.org/development/git/
自分のクソみたいな犯罪歴として、iPhone3GSくらいのころにBulletをタッチで動くように
書き直したことあるので、地獄のような移植作業には自信がある。
とりあえずBonjourでのアプリケーション側の実装を進めている。
iMousePadPre
https://github.com/sassembla/iMousePadPre
現在の通信方式
さっさと成果が欲しいので(というかモデリングしたいので)日和ってBonjourを使う。
ただし「同一wifi下にすべてのマシンが~」という条件からはどうにかして逃げ出す。
通信経路は以下のようになった。
・iPhoneでのBTテザリングあり
・iPadでiPhoneのBTテザリングを受ける
・MacでiPhoneのBTテザリングを受ける
この状態で、wifiとか付けなくてもMac-iPad間が接続される。
見てるか哲平、、、wifiなんていらなかったんや、、
避けた選択肢について、一応弁解しておくと、
・同一wifi内に全マシンがある場合はそれで良いんじゃない? →wifiでんち食うからキライ
→同一wifi内っていう条件が満たしにくい
・Macでwifi局作って接続すれば良いんじゃない?
→めんどいしいろんな事故のもとになるからヤダ
以上。いろんな場所であそびたい勢としてはwifiの単独ポータビリティの無さに殺意。
Bonjourでの実装
参考にしたQiitaの記事が簡潔。
あ、ただ開始時にport指定してるのがあんまり意味ないと思ったのでそこは変更した。
iOS と Mac OS X 間を Bonjour で通信してちょっと楽しげなこと
http://qiita.com/feb19/items/da07d96619acb933a3c3
差分
https://github.com/sassembla/iMousePadPre/blob/master/ServerPre/ServerPre/AppDelegate.m#L41
切断周りに何の対処もしてないのでそのへんあとでやる。
残りの実装
Bonjour経由での通信にBlocks使えるハンドラが出てるので、データの受け渡しは楽。
将来BLEのコード書き直した時用に出力 = iOS側を調整する必要があるけど、
その場合は出力側のみ変更すればいいので、データのコーディネートする箇所だけを
独立させておけば改修は簡単そう。
マウスのコードの参考
キーイベントの参考
http://ianyh.com/blog/2013/06/05/accessibility/
このへんのトリガーをNSDataに固めて受けて解答して着火、ってやればOK。
成果物がこちら。
iMousePadPre
https://github.com/sassembla/iMousePadPre